/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package verins.DAO;

import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.persistence.Query;
import javax.swing.JOptionPane;
import verins.BO.LogBO;
import verins.beans.Log;
import verins.beans.Partidopolitico;

/**
 *
 * @author yisse
 */
public class PartidopoliticoDAO {


    public boolean save(Partidopolitico partido){
       
      try{
        // Create the EntityManager
        Log entrada=null;
        EntityManagerFactory emf = Persistence.createEntityManagerFactory("verinsPU");
        EntityManager em = emf.createEntityManager();

        em.getTransaction().begin();

      if (partido.getIdpartidopolitico()==0)
      {em.persist(partido);
      entrada=LogBO.crearEntradaLogSeguimiento(partido.getIdpartidopolitico(), 0, verins.Utils.Constantes.LSEG_REGISTRO, "Se registró el partido político: "+partido.getNombre());
      }
      else
      { em.merge(partido);
      
       entrada=LogBO.crearEntradaLogSeguimiento(partido.getIdpartidopolitico(), 0, verins.Utils.Constantes.LSEG_MODIFICACION, "Se modificó el partido político: "+partido.getNombre());
      } 
        em.getTransaction().commit();
        em.close();
        emf.close();
          LogBO.registrarLog(entrada);
        
        return true;
      }catch(Exception ex){
          JOptionPane.showMessageDialog(null, "Error al grabar datos"+ex.getMessage());
          return false;
      }
    }


       public List findAll(){
        List lista=null;
        try{

            EntityManagerFactory emf = Persistence.createEntityManagerFactory("verinsPU");
            EntityManager em = emf.createEntityManager();
            Query query=em.createNamedQuery("PartidoPolitico.findAll");

            lista=query.getResultList();
            if(em.getTransaction().isActive())
                em.getTransaction().commit();
            em.close();
            emf.close();

            return lista;

        }catch(Exception ex){
                System.out.println(ex.getMessage());
        }
        return lista;
    }
       
       
        
   public Partidopolitico findById(int id){
        Partidopolitico partido=null;
        try{

            EntityManagerFactory emf = Persistence.createEntityManagerFactory("verinsPU");
            EntityManager em = emf.createEntityManager();
            partido = em.find(Partidopolitico.class, id);
            em.close();
            emf.close();
        }catch(Exception ex){

        }
        return partido;
    } 
        
        
   public  List<Partidopolitico> BuscarPartido(Partidopolitico partidospoliticos){
       List<Partidopolitico> lista=null;
        try{
            String strSelect=
                    "SELECT p FROM Partidopolitico p  WHERE p.nombre LIKE '%"+partidospoliticos.getNombre()+"%'";
            if (partidospoliticos.getIdtipopartidopolitico().getIdtipopartidopolitico()!=0)
                strSelect= strSelect+" and  p.idtipopartidopolitico.idtipopartidopolitico = "+partidospoliticos.getIdtipopartidopolitico().getIdtipopartidopolitico().toString();
            
            if (!partidospoliticos.getEstado().equalsIgnoreCase("Seleccionar"))
                strSelect= strSelect+" and  p.estado = '"+partidospoliticos.getEstado()+"'";
            
            EntityManagerFactory emf = Persistence.createEntityManagerFactory("verinsPU");
            EntityManager em = emf.createEntityManager();
            em.getTransaction().begin();
            
            Query query= em.createQuery(strSelect);
            
            lista = query.getResultList();
            
            if (em.getTransaction().isActive())
                em.getTransaction().commit();
            em.close();    
            emf.close();
        }catch(Exception ex){
             //   JOptionPane.showMessageDialog(null, ex.getMessage());
        }
        return lista;
    }


}
